package main

import (
	"fmt"
)

func main() {
	// 1、定义int类型
	// var num int = 10
	// fmt.Printf("num = %v 类型: %T\n", num, num)

	// 2、int8的范围演示
	// var num int8 = 98
	// fmt.Printf("num = %v 类型: %T\n", num, num)

	// 报错：constant 130 overflows int8
	// var num int8 = 130
	// fmt.Printf("num = %v 类型: %T\n", num, num)

	// unsafe.Sizeof 查看不同长度的整型占用的存储空间大小
	// var a int8 = 15
	// fmt.Printf("a = %v 类型: %T 占用存储空间大小: %d\n", a, a, unsafe.Sizeof(a))

	// var a int32 = 15
	// fmt.Printf("a = %v 类型: %T 占用存储空间大小: %d\n", a, a, unsafe.Sizeof(a))

	// 3、uint8的范围(0~255)
	// var a uint8 = 255
	// fmt.Printf("a = %v 类型: %T 占用存储空间大小: %d\n", a, a, unsafe.Sizeof(a))

	// 4、uint8 int16 ... 占用的存储空间大小
	// var a uint8 = 255
	// fmt.Printf("a = %v 类型: %T 占用存储空间大小: %d\n", a, a, unsafe.Sizeof(a))

	// 5、int类型转换

	// var a1 int32 = 10
	// var a2 int64 = 21
	// fmt.Println(int64(a1) + a2)
	// fmt.Println(a1 + int32(a2))

	// 高位向低位转换时要注意
	// var n1 int16 = 130
	// fmt.Println(int8(n1)) // -126

	// 6、int 数字字面量语法 %d表示10进制输出 %x表示16进制输出 %o表示8进制输出 %b表示2进制输出

	// num := 30
	// fmt.Printf("num = %v 类型: %T\n", num, num)
	// fmt.Println(unsafe.Sizeof(num))

	num := 30
	fmt.Printf("num = %d 类型: %T\n", num, num)
}
